package jmine.tec.services.io;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import jmine.tec.services.api.ServicesPage;

/**
 * Interface que define leitores de serviços a partir de uma {@link URL}.
 * 
 * @author Rafael Volpato
 * @date Oct 29, 2009
 */
public interface ServicesReader {

    String XLS_REGEX = "(?i).*\\.xls$";

    String XML_REGEX = "(?i).*\\.xml$";

    String ZIP_REGEX = "(?i).*\\.zip$";

    /**
     * Executa a leitura de definições de serviços existentes no arquivo informado.
     * 
     * @param fileName o nome do arquivo
     * @param inputStream o conteúdo do arquivo
     * @return lista de {@link ServicesPageBean}
     * @throws IOException se ocorrer algum erro durante a leitura
     */
    List<ServicesPageBean> readServicesPageBean(String fileName, InputStream inputStream) throws IOException;

    /**
     * Executa a leitura de serviços existentes no arquivo informado.
     * 
     * @param fileName o nome do arquivo
     * @param inputStream o conteúdo do arquivo
     * @return lista de {@link ServicesPage}
     * @throws IOException se ocorrer algum erro durante a leitura
     */
    List<ServicesPage> readServices(String fileName, InputStream inputStream) throws IOException;
}
